package thread;

//练习,100张票三人卖
public class WindowTest4 implements Runnable {
	private int ticket = 100;
	@Override
	public void run() {
		while (true) {
			// 同步关键字括号中是同步监视器
			if (ticket <= 0) {
				return;
			}
			getTicket();
		}
	}

	private synchronized void getTicket() {
		if (ticket == 0)
			return;
		System.out.println(Thread.currentThread().getName() + "-->售出第：" + (101 - ticket) + "票");
		ticket--;
		try {
			Thread.sleep(50);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {
		WindowTest4 wt1 = new WindowTest4();
		// 创建三个线程，并启动，通过的是同一个对象来创建，所以票数可以是非静态的
		new Thread(wt1).start();
		new Thread(wt1).start();
		new Thread(wt1).start();
		/*部分输出结果：
		 * Thread-1-->售出第：1票 
		 * Thread-1-->售出第：2票 
		 * Thread-1-->售出第：3票 
		 * Thread-1-->售出第：4票
		 * Thread-2-->售出第：5票 
		 * Thread-2-->售出第：6票 
		 * Thread-2-->售出第：7票 
		 * Thread-0-->售出第：8票
		 * Thread-2-->售出第：9票 
		 * Thread-2-->售出第：10票 
		 * Thread-1-->售出第：11票 
		 * Thread-1-->售出第：12票
		 */
	}
}
